package br.ufrpe.bsi.pvs.database.roupa;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import br.ufrpe.bsi.pvs.database.Conexao;
import br.ufrpe.bsi.pvs.model.roupa.TipoRoupa;

public class TipoRoupaDAOImpl implements TipoRoupaDAO {

	@Override
	public void salvar(TipoRoupa object) {
		
	}

	@Override
	public void remover(TipoRoupa object) {
		
	}

	@Override
	public void remover(Serializable id) {
		
	}

	@Override
	public List<TipoRoupa> listar() {
		List<TipoRoupa> TipoRoupas = new ArrayList<TipoRoupa>();

		try (Connection con = Conexao.getConnection()) {
			PreparedStatement ps = con.prepareStatement("select * from tipo_roupa");
			ResultSet rs = ps.executeQuery();
			
			while (rs.next()) {
				TipoRoupas.add(TipoRoupa.getTipoRoupa(rs.getString("nome")));
			}
 
			ps.close();
			
		} catch (Exception e) {
			System.out.println("[DB ERROR] cant list TipoRoupas");
		}

		return TipoRoupas;
	}

	@Override
	public TipoRoupa pesquisar(Serializable id) {
		TipoRoupa tipo_roupa = null;
		try (Connection con = Conexao.getConnection()) {
			PreparedStatement ps = con
					.prepareStatement("select nome from tipo_roupa where id = ?");
			ps.setInt(1, (Integer) id);

			ResultSet rs = ps.executeQuery();

			while (rs.next())
				tipo_roupa = TipoRoupa.getTipoRoupa(rs.getString("nome"));

 
			ps.close();
		} catch (Exception e) {
			System.out.println("[DB ERROR] cant found TipoRoupa id: " + id);
		}

		return tipo_roupa;
	}

	@Override
	public TipoRoupa pesquisar(String name) {
		TipoRoupa tipo = null;
		try (Connection con = Conexao.getConnection()) {
			PreparedStatement ps = con
					.prepareStatement("select nome from tipo_roupa where nome = ?");
			ps.setString(1, name);

			ResultSet rs = ps.executeQuery();

			while (rs.next())
				tipo = TipoRoupa.getTipoRoupa(rs.getString("nome"));

 
			ps.close();
		} catch (Exception e) {
			System.out.println("[DB ERROR] cant found TipoRoupa named: " + name);
		}

		return tipo;
	}

}
